package com.fpd.model.vo;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fpd.enums.AddressResultEnum;
import com.fpd.enums.CaseStateEnum;
import com.fpd.tools.DateUtil;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * @desc 客户基础信息(主要对应页面显示（web页面/swt、swing界面）的数据对象)
 * @author wujiangbo
 * @date 2019年11月6日 上午10:50:42
 */
@Data
@ApiModel
public class CustomerBaseInfoVO implements Serializable {

	/**
	 * 序列号
	 */

	private static final long serialVersionUID = -8149538202083274119L;

	/**
	 * 主键ID
	 */
	private String id;

	private String failTapingNo;

	/**
	 * 提交人
	 */
	private String submitName;

	/**
	 * 提交人id
	 */
	private String submitId;

	/**
	 * 催收失败原因
	 */
	private String failReason;

	/**
	 * 客服id
	 */
	private String userId;

	/**
	 * 合同号
	 */
	private String contractNumber;

	/**
	 * 客户号
	 */
	@ApiModelProperty(value = "客户号")
	private String custNo;

	/**
	 * 客户姓名
	 */
	@ApiModelProperty(value = "姓名")
	private String custName;

	/**
	 * 性别（0：男；1：女；2：保密）
	 */
	private String custSex;

	/**
	 * 身份证号
	 */
	@ApiModelProperty(value = "身份证号")
	private String custIdNumber;

	/**
	 * 电子邮箱
	 */
	@ApiModelProperty(value = "邮箱")
	private String email;

	/**
	 * 逾期金额
	 */
	@ApiModelProperty(value = "逾期金额")
	private BigDecimal yuqiAmount;

	/**
	 * 逾期天数
	 */
	@ApiModelProperty(value = "逾期天数")
	private int yuqiDay;


	/**
	 * 开始逾期天数
	 */
	private int yuqiDayBegin;

	/**
	 * 结束逾期天数
	 */
	private int yuqiDayEnd;

	/**
	 * 开始逾期金额
	 */
	private BigDecimal yuqiAmountBegin;

	/**
	 * 结束逾期金额
	 */
	private BigDecimal yuqiAmountEnd;

	/**
	 * 客户类型（1：A类客户；2：B类客户；3：C类客户；4：D类客户）
	 */
	private String custType;

	//是否
	private Boolean dispatchSend;

	//是否已归属（0：未归属：1：已归属）
	private Integer canCheck;
	
	
	/**
	 * 开始委案时间
	 */
	@ApiModelProperty(value = "开始委案时间")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private Date beginTimeCase;

	/**
	 * 委案结束时间
	 */
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private Date takeBackPlanTime;
	
	/**
	 * 发函状态
	 */
	private Integer sendLawyerState;

	/**
	 * 发函时间
	 */
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private Date sendLawyerTime;

	private Integer leaveCount;

	private Integer leaveState;

	/**
	 * 合同数量
	 */
	private int contractCount;

	/**
	 * 是否有模板（0：没有 1：有）
	 */
	private Integer canTemplate;

	/**
	 * 创建时间
	 */
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private Date createTime;

	/**
	 * 更新时间
	 */
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private Date updateTime;


	/**
	 * 委托方
	 */
	private String thirdParty;
	
	//委托方
	private String noThirdParty;
	
	/**
	 * 委托方名称
	 */
	@ApiModelProperty(value = "委托方")
	private String thirdPartyName;

	/**
	 * 能否转移（0：是；1：否）
	 */
	private Integer isTransfer;

	/**
	 * 跟进次数
	 */
	private Integer followCount;

	/**
	 * 出生日期
	 */
	@ApiModelProperty(value = "出生日期")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private Date birthday;

	/**
	 * 户籍地址
	 */
	@ApiModelProperty(value = "户籍地址")
	private String registerAddress;

	/**
	 * 手机号码
	 */
	@ApiModelProperty(value = "手机号码")
	private String phoneNumber;

	/**
	 * 现居住地
	 */
	@ApiModelProperty(value = "现居住地")
	private String liveAddress;

	/**
	 * 家庭电话
	 */
	private String homePhone;

	/**
	 * 现居城市
	 */
	private String liveCity;

	/**
	 * 剩余总欠款
	 */
	private BigDecimal leftTotalDebt;

	/**
	 * 单位名称
	 */
	@ApiModelProperty(value = "单位名称")
	private String unitName;

	/**
	 * 单位地址
	 */
	@ApiModelProperty(value = "单位地址")
	private String unitAddress;

	/**
	 * 单位电话
	 */
	@ApiModelProperty(value = "单位电话")
	private String unitPhone;
	
	/**
	 * 其他地址
	 */
	@ApiModelProperty(value = "其他地址")
	private String otherAddress;

	/**
	 * 划扣银行卡号
	 */
	private String bankNumber;

	/**
	 * 划扣银行名称
	 */
	private String bankName;

	private String truename;

	private String groupName;
	/**
	 * 是否可申请留案（0：不能留案 1：可以留案）
	 */
	private String canLeaveCase;

	private Date sendDate;

	private String backAmount;
	
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private Date backTime;

	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private Date followTime;

	private String followWay;

	private String followState;

	private String followId;

	/**
	 * 来访时间
	 */
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private String visitTime;

	private String visitType;

	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private Date firstLeaveDate;

	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private Date secondLeaveDate;

	@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
	private Date leaveDate;
	
	private String leaveDesc;//留案备注

	private String firstLeaveReason;

	private String secondLeaveReason;

	private Integer aging;

	//回款提醒(0:不提醒 1：提醒)
	private String backWarn;

	//年龄段(1:18~25岁，2：26~35岁，3：36~45岁，4：46岁及以上)
	private int agePart;
	
	private int age;

	//大头照
	private String idCardPhotoPath;

	//无法发函原因
	private String unableSendReason;

	//客户分类（1：全部还款客户；2：部分还款客户；3：待跟进客户；4：拒绝回款客户；
	private String custClassify;

	private String secondContact;

	private String mobile;

	private String mobile2;
	
	private String secondRelationId;

	private String secondRelation;
	
	private String secondRelationName;

	private String secondName;

	private String secondPhone;
	/**
	 * 案件状态
	 */
	private int caseState;

	//其他类
	private String spouseName;
	private String spousePhone;

	//回款记录表ID
	private String moneyBackId;

	//重新分配标识
	private String returnFlag;
	
	private String fpStatus;// 案件以客户纬度分案，0表示未分案，1表示分案
	
	private String gsStatus;// 0表示未归属，1表示已归属 客户分配之后,变成归属。组长取消之后变成已分配未归属
	
	private String caseStateName;//案件回款状态中文
	
	@ApiModelProperty(value = "客户分类")
	private String custLetterType; //客户函件分类
	
	@ApiModelProperty(value = "征信评分")
	private BigDecimal score; //征信评分
	
	@ApiModelProperty(value = "失信分类")
	private String sxType; //失信分类
	
	@ApiModelProperty(value = "是否重复委案")
	private String isRepent;//是否重复委案
	
	@ApiModelProperty(value = "是否共债")
	private String  isGz;//0:不共债 1：共债
	
	private boolean showSendButton;//是否能发函
	
	@ApiModelProperty(value = "是否能发函")
	private String noReason;//不能发函原因
	
	private String editAddress;//户籍地址修复状态
	
   private String editAddress2;//居住地址修复状态
	
	private String editAddress3;//单位地址修复状态
	
	private String editAddress4;//其他地址修复状态
	
	private String editAddressName;
	private String editAddressName2;
	private String editAddressName3;
	private String editAddressName4;
	
	private String registerAddress2;//修复后的户籍地址
	
	private String liveAddress2;//修复后的居住地址
	
	private String unitAddress2;//修复后的单位地址
	
	private String otherAddress2;//修复后的其他地址  
	
	private String sendAddress;//客户已经发函地址
	
	private String selectAddress;//客户选择的发函地址
	
	private String addressType;//客户选择的发函地址类型
	
	private String innerRecover; // 是否内部收回 0否 1是 默认否
	
	private String innerLeave;//是否内部留案 0否 1是 默认否
	
   private String addressResult;//地址核查结果
	
	private String hjXsd;//户籍地址相似度
	
	private String jtXsd;//家庭地址相似度
	
	private String jhXsd;//家户地址相似度
	
	private String lastuseTime;//最近用邮时间
	
	private int caseType;//案件类型
	
	private String caseTypeDesc;
	
	private String lsStatus;//临时发函标识
	
	private String thStatus;//签收退回标识，1表示已经退回
	
	private String fpUserId;//分配员工id
	
	private String beginMonth;//委案开始时间（年月格式）
	
	private String allCustIdNumber;//完整身份证
	
	private String beginDate;//委案开始时间（年月日）
	
	private String year;//委案年
	
	private String month;//委案月
	
	//函件类型 1代表 普通件  2代表密保件
    private String letterType;
	
	public String getBeginMonth() {
		return null == this.beginTimeCase ? "" : DateUtil.parseDateToStr(this.beginTimeCase, DateUtil.DATE_FORMAT_YYYY_MM);
	}
	
	public String getBeginDate() {
		return null == this.beginTimeCase ? "" : DateUtil.parseDateToStr(this.beginTimeCase, DateUtil.DATE_TIME_FORMAT_YYYYMMDD);
	}
	
	public String getYear() {
		return null == this.beginTimeCase ? "" : DateUtil.parseDateToStr(this.beginTimeCase, DateUtil.DATE_FORMAT_YYYY);
	}
	
	public String getMonth() {
		return null == this.beginTimeCase ? "" : DateUtil.parseDateToStr(this.beginTimeCase, DateUtil.DATE_FORMAT_M);
	}

	public String getEditAddressName() {
		return AddressResultEnum.getNameByValue(this.editAddress);
	}

	public String getEditAddressName2() {
		return AddressResultEnum.getNameByValue(this.editAddress2);
	}

	public String getEditAddressName3() {
		return AddressResultEnum.getNameByValue(this.editAddress3);
	}

	public String getEditAddressName4() {
		return AddressResultEnum.getNameByValue(this.editAddress4);
	}
	
	public String getCaseStateName() {
		return CaseStateEnum.getNameByValue(this.caseState);
	}
	
}
